home *** CD-ROM | disk | FTP | other *** search
/ SGI MIPSpro Fortran-77 7.2 / SGI MIPSpro Fortran-77 7.2.iso / docs6.4 / relnotes / ftn77_fe / ch5.z / ch5
Text File  |  1997-09-04  |  31KB  |  660 lines

  1.  
  2.  
  3.  
  4.                                                - 1 -
  5.  
  6.  
  7.  
  8.                     7.2 Fortran 77 Front-End Release Notes
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.                                                - 2 -
  69.  
  70.  
  71.  
  72.                     DDDDooooccccuuuummmmeeeennnntttt NNNNuuuummmmbbbbeeeerrrr 000000007777----1111666655559999----000011110000
  73.  
  74.  
  75.                     5.  _K_n_o_w_n__P_r_o_b_l_e_m_s__a_n_d__W_o_r_k_a_r_o_u_n_d_s
  76.  
  77.                     This chapter describes the known problems with
  78.                     the current release of the Fortran product and
  79.                     how to work around them.  Some of the
  80.                     descriptions are followed by a Silicon Graphics,
  81.                     Inc., bug report number in the form
  82.                     (Bug ID xxxxx).
  83.  
  84.  
  85.                     5.1  _K_n_o_w_n__P_r_o_b_l_e_m_s__(_L_i_c_e_n_s_i_n_g_)
  86.  
  87.                        +o The MIPSpro F77 compiler will abort if the
  88.                          license file directory (/var/flexlm)
  89.                          contains a cycle formed by symbolic links.
  90.                          For example:
  91.  
  92.                          %ls -l /var/flexlm
  93.                          lrwxr-xr-x    1 root   sys       1 Mar 13  1996 license -> .
  94.                          -rw-r--r--    1 root   sys    1162 Aug 20 17:09 license.dat
  95.  
  96.                          %f77 foo.f
  97.                          Bus error (core dumped)
  98.  
  99.                          The solution is to remove the symbolic link
  100.                          that forms the cycle.
  101.  
  102.                        +o Cryptic warning message from licensing.
  103.  
  104.                          The first line of a warning message that
  105.                          occurs when a license file exists under
  106.                          /var/flexlm but does not contain the
  107.                          compiler license can be misleading. For
  108.                          completeness the following example
  109.                          illustrates the entire output when a
  110.                          license file exists, but a license is not
  111.                          installed:
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.                                                - 3 -
  135.  
  136.  
  137.  
  138.                          %f77 foo.f
  139.                          No such feature exists (-5,116)
  140.  
  141.                           The MIPSpro Fortran 77 Compiler
  142.                           (license FEATURE string = f77)
  143.                           requires a license password.
  144.  
  145.                           For license installation and trouble shooting
  146.                           information visit the web page:
  147.  
  148.                                   http://www.sgi.com/Support/Licensing/install_docs.html
  149.  
  150.                           To obtain a Permanent license (proof of purchase
  151.                           required) or an Evaluation license please
  152.                           visit our license request web page:
  153.  
  154.                                   http://www.sgi.com/Products/license.html
  155.  
  156.                                   or send a blank email message to:
  157.  
  158.                                   license@sgi.com
  159.  
  160.                           In North America, Silicon Graphics' customers may request
  161.                           Permanent licenses by sending a facsimile to:
  162.  
  163.                                   (650) 932-0537
  164.  
  165.                                   or by calling our technical support hotline
  166.  
  167.                                   1-800-800-4SGI
  168.  
  169.                           If you are Outside of North America or you are not a Silicon
  170.                           Graphics support customer then contact your local support provider.
  171.  
  172.  
  173.  
  174.  
  175.                     5.2  _K_n_o_w_n__P_r_o_b_l_e_m_s__i_n__M_I_P_S_p_r_o__F_o_r_t_r_a_n__7_7
  176.  
  177.                     The problems described in this section are known
  178.                     to exist in MIPSpro Fortran 77 in both 32-bit
  179.                     and 64-bit compilation modes.  References to the
  180.                     64-bit compiler implicitly refer to ----nnnn33332222
  181.                     compilations as well.
  182.  
  183.                      +o SSSSyyyymmmmbbbboooollll ccccllllaaaasssshhhh wwwwiiiitttthhhh _llll_iiii_bbbb_ffff_tttt_nnnn_...._ssss_oooo ((((BBBBuuuugggg IIIIDDDD 111155554444888844445555))))
  184.                        Some programs which used to link correctly
  185.                        with previous releases get an _l_d error
  186.                        because of conflicting symbol definitions
  187.                        between their symbols and those of _l_i_b_f_t_n._s_o.
  188.                        Work around this by compiling with the
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.                                                - 4 -
  201.  
  202.  
  203.  
  204.                        -_n_o_n__s_h_a_r_e_d option.
  205.  
  206.                      +o CCCCoooommmmppppiiiilllliiiinnnngggg oooolllldddd FFFFoooorrrrttttrrrraaaannnn ccccooooddddeeee
  207.                        Fortran, by default, allocates local
  208.                        variables on the stack for faster execution
  209.                        speed.  These local automatic variables are
  210.                        uninitialized, as opposed to being
  211.                        initialized to zeros, which occurs using the
  212.                        static allocation of older Fortran systems.
  213.                        Also, the value of an automatic variable is
  214.                        not retained between successive calls to a
  215.                        subroutine as for a static variable.
  216.                        Therefore,  if you have an old program,
  217.                        especially one ported from the VAX, that
  218.                        behaves strangely, recompile it with ----ssssttttaaaattttiiiicccc
  219.                        and check the results.  If using ----ssssttttaaaattttiiiicccc
  220.                        works correctly, the problem is caused by
  221.                        automatic allocation of undeclared static
  222.                        variables.  If execution speed is not an
  223.                        issue, the program can be compiled with
  224.                        ----ssssttttaaaattttiiiicccc without having to be modified.
  225.                        Otherwise, you need to track down all
  226.                        variables that expect an initial value
  227.                        (either a zero value when starting a program
  228.                        or the value from the previous subroutine
  229.                        invocation in a subroutine call) and declare
  230.                        those variables as static using the STATIC
  231.                        statement.  Using the ----LLLLIIIISSSSTTTT option can help
  232.                        in tracking these static variables.
  233.  
  234.                        Running these old programs without the
  235.                        ----ssssttttaaaattttiiiicccc compilation option sometimes results
  236.                        in very slow execution speed because the
  237.                        supposedly static values are undefined and
  238.                        take a lot more time to converge.  So the
  239.                        first thing to try when you have an unusual
  240.                        performance problem when porting a program to
  241.                        a Silicon Graphics platform is to add the
  242.                        ----ssssttttaaaattttiiiicccc option when compiling.
  243.  
  244.                      +o VVVVaaaarrrriiiiaaaabbbblllleeee ffffoooorrrrmmmmaaaatttt iiiinnnn aaaa cccchhhhaaaarrrraaaacccctttteeeerrrr ssssttttrrrriiiinnnngggg ((((BBBBuuuugggg IIIIDDDD
  245.                        8888777777774444))))
  246.                        Variable format is only recognized inside a
  247.                        FORMAT statement.  If it is used within a
  248.                        character string, it will give a runtime
  249.                        error.  Work around this bug by making an
  250.                        explicit FORMAT statement when variable
  251.                        format is desired.
  252.  
  253.                      +o RRRRuuuunnnnttttiiiimmmmeeee IIII////OOOO eeeerrrrrrrroooorrrr mmmmeeeessssssssaaaaggggeeeessss ((((BBBBuuuugggg IIIIDDDD 9999222288884444))))
  254.                        All Fortran I/O error messages are documented
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.                                                - 5 -
  267.  
  268.  
  269.  
  270.                        in _p_e_r_r_o_r(3F) and all IRIX system error
  271.                        messages are documented in _i_n_t_r_o(2).   Some
  272.                        of these numbers overlapped and sometimes the
  273.                        wrong error messages are printed for a given
  274.                        error number.  When the error message does
  275.                        not make sense, it's best to check both man
  276.                        pages to see which one applies.
  277.  
  278.                     5.3  _K_n_o_w_n__P_r_o_b_l_e_m_s__i_n__M_I_P_S_p_r_o__6_4_-_B_i_t__F_o_r_t_r_a_n__7_7
  279.  
  280.                      +o PPPPrrrroooobbbblllleeeemmmmssss wwwwiiiitttthhhh MMMMPPPP pppprrrroooocccceeeesssssssseeeessss lllloooocccckkkkeeeedddd oooonnnnttttoooo aaaa ccccppppuuuu
  281.                        The Power Challenge machines have the special
  282.                        hardware device /dev/ccsync to help reduce
  283.                        the overhead of an MP job, and this device is
  284.                        used by default.  However, due to necessary
  285.                        compromises in the design, if an MP job uses
  286.                        this device, the mp library will lock the
  287.                        master process onto a cpu via the equivalent
  288.                        of the sysmp(MP_MUSTRUN) system call.  There
  289.                        are some unfortunate side effects of this:
  290.                        you may not execute the sysmp(MP_RUNANYWHERE)
  291.                        command for the master process; the mp
  292.                        synchronization will fail if you do.  Some
  293.                        users lock the master and each of the slave
  294.                        processes onto separate cpus.  This can fail
  295.                        in the same way as above if the master
  296.                        process gets assigned to a different cpu.
  297.                        Process locking is an inherited attribute;
  298.                        this means that if your MP program forks or
  299.                        sprocs other child processes, they will be
  300.                        locked onto the same cpu as the master, which
  301.                        can seriously degrade performance.  This can
  302.                        be worked around by having the newly created
  303.                        child process execute sysmp(MP_RUNANYWHERE).
  304.                        If for some reason you must do your own
  305.                        process locking, and/or cannot get the newly
  306.                        created children to execute
  307.                        sysmp(MP_RUNANYWHERE), the problem can be
  308.                        avoided by setting the environment variable
  309.                        _MP_DONT_USE_CCSYNC, which will prevent MP
  310.                        jobs run by that shell from using
  311.                        /dev/ccsync.
  312.  
  313.                      +o TTTToooooooo mmmmaaaannnnyyyy ccccaaaallllllllssss ttttoooo mmmmpppp____ddddeeeessssttttrrrrooooyyyy
  314.                        Due to a problem in libmp.a, if a process
  315.                        creates and destroys MP processes (via
  316.                        mp_destroy) more than about 35 times in a
  317.                        single run, an internal table will overflow
  318.                        and you will get the message:  "Error: MP lib
  319.                        could not register __mp_cleanup function via
  320.                        __ateachexit".  Note that MP process
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.                                                - 6 -
  333.  
  334.  
  335.  
  336.                        destruction must be done deliberately; the
  337.                        default behavior is to create the processes
  338.                        once, and to keep them around until the job
  339.                        terminates.  There is no viable workaround
  340.                        for this problem (other than calling
  341.                        mp_destroy less often).
  342.  
  343.                      +o LLLLooooggggiiiiccccaaaallll vvvvaaaarrrriiiiaaaabbbblllleeeessss hhhhoooolllldddd iiiinnnntttteeeeggggeeeerrrr vvvvaaaalllluuuueeeessss
  344.                        In the 32-bit compiler, when LOGICAL*2,
  345.                        LOGICAL*4, and LOGICAL*8 variables are
  346.                        assigned integer values (an extension to the
  347.                        Fortran 77 standard), the values are
  348.                        converted to .TRUE. or .FALSE.  (one and
  349.                        zero, respectively) before being assigned to
  350.                        the variables.  In the 64-bit compiler, the
  351.                        LOGICAL variable is assigned the bit pattern
  352.                        corresponding to the integer expression.
  353.  
  354.                      +o IIIInnnnlllliiiinnnneeee ooooppppttttiiiioooonnnn ////NNNNOOOOFFFF77777777 iiiissss nnnnooootttt ssssuuuuppppppppoooorrrrtttteeeedddd ((((BBBBuuuugggg IIIIDDDD
  355.                        111188888888555544449999))))
  356.                        This option is ignored by the 64-bit
  357.                        compiler.
  358.  
  359.                      +o AAAAddddjjjjuuuussssttttaaaabbbblllleeee aaaarrrrrrrraaaayyyy ddddiiiimmmmeeeennnnssssiiiioooonnnnssss ccccaaaannnn''''tttt bbbbeeee aaaarrrrrrrraaaayyyy
  360.                        vvvvaaaalllluuuueeeessss ((((BBBBuuuugggg IIIIDDDD 222200001111666655554444))))
  361.                        Although this has always been documented as
  362.                        illegal in SGI Fortran, the 32-bit compiler
  363.                        accepts this syntax, whereas the 64-bit
  364.                        compiler emits a compile-time error.
  365.  
  366.                      +o TTTThhhheeee ----XXXXllllooooccccaaaallllddddaaaattttaaaa ooooppppttttiiiioooonnnn hhhhaaaassss cccchhhhaaaannnnggggeeeedddd ssssyyyynnnnttttaaaaxxxx
  367.                        The 64-bit loader uses a different syntax for
  368.                        the option to make each thread in an MP
  369.                        program have its own copy of a common block.
  370.                        In the 32-bit loader, the option is
  371.                        ----XXXXllllooooccccaaaallllddddaaaattttaaaa ccccoooommmmmmmmoooonnnn____nnnnaaaammmmeeee____ while the 64-bit
  372.                        loader uses ----WWWWllll,,,,----XXXXllllooooccccaaaallll,,,,ccccoooommmmmmmmoooonnnn____nnnnaaaammmmeeee____.  Also,
  373.                        the 32-bit loader allows list of ccccoooommmmmmmmoooonnnn____nnnnaaaammmmeeees
  374.                        with the one ----XXXXllllooooccccaaaallllddddaaaattttaaaa option, while the
  375.                        64-bit loader allows only one name per
  376.                        ----XXXXllllooooccccaaaallll option (but does allow multiple
  377.                        ----XXXXllllooooccccaaaallll options).
  378.  
  379.                      +o NNNNoooo wwwwaaaarrrrnnnniiiinnnnggggssss ffffoooorrrr mmmmiiiissssaaaalllliiiiggggnnnneeeedddd ccccoooommmmmmmmoooonnnn bbbblllloooocccckkkkssss
  380.                        The 32-bit compiler warns for misaligned
  381.                        COMMON blocks, whereas the 64-bit compiler
  382.                        does not.
  383.  
  384.                      +o SSSSttttrrrriiiicccctttteeeerrrr cccchhhheeeecccckkkkiiiinnnngggg oooonnnn GGGGOOOOTTTTOOOO''''ssss
  385.                        The MIPSpro manuals document that GOTO is
  386.                        only valid when the branch is to an
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.                                                - 7 -
  399.  
  400.  
  401.  
  402.                        executable statement.  The 64-bit compiler is
  403.                        stricter about enforcing this rule than the
  404.                        32-bit compiler.
  405.  
  406.                      +o 222255556666----cccchhhhaaaarrrraaaacccctttteeeerrrr lllliiiimmmmiiiitttt oooonnnn lllliiiinnnneeee lllleeeennnnggggtttthhhh
  407.                        The 32-bit compiler has no limit on the
  408.                        length of a source line, whereas the 64-bit
  409.                        compiler limits a line to 256 characters.
  410.                        Continuation lines may be used for source
  411.                        lines longer than 256 characters.
  412.  
  413.                      +o 99999999 mmmmaaaaxxxxiiiimmmmuuuummmm ccccoooonnnnttttiiiinnnnuuuuaaaattttiiiioooonnnn lllliiiinnnneeeessss
  414.                        The compiler allows the maximum number of
  415.                        continuation lines (99 by default) to be
  416.                        increased by using -Wf,-NC<number>.
  417.  
  418.                      +o ----mmmmpppp____kkkkeeeeeeeepppp nnnnooootttt rrrreeeeccccooooggggnnnniiiizzzzeeeedddd
  419.                        This option is needed for debugging parallel
  420.                        applications when the 32-bit compilers are
  421.                        used, but is unnecessary with the 64-bit
  422.                        compilers, as proper debugging info is
  423.                        generated when the ----gggg compiler option is
  424.                        used.
  425.  
  426.                      +o ----wwww66666666 iiiissss nnnnooootttt iiiimmmmpppplllleeeemmmmeeeennnntttteeeedddd
  427.                        The ----wwww66666666 option is not implemented in this
  428.                        release.
  429.  
  430.                      +o ----66666666 iiiissss nnnnooootttt iiiimmmmpppplllleeeemmmmeeeennnntttteeeedddd
  431.                        The ----66666666 option is not implemented in this
  432.                        release.
  433.  
  434.                      +o ----uuuusssseeeeffffppppiiiiddddxxxx iiiissss nnnnooootttt iiiimmmmpppplllleeeemmmmeeeennnntttteeeedddd
  435.                        The ----uuuusssseeeeffffppppiiiiddddxxxx option is not implemented in
  436.                        this release.
  437.  
  438.                      +o ----UUUU iiiissss nnnnooootttt iiiimmmmpppplllleeeemmmmeeeennnntttteeeedddd
  439.                        The ----UUUU option is not implemented in this
  440.                        release.
  441.  
  442.                      +o NNNNaaaammmmeeeelllliiiisssstttt ssssyyyymmmmbbbboooollllssss ssssiiiilllleeeennnnttttllllyyyy ttttrrrruuuunnnnccccaaaatttteeeedddd ((((BBBBuuuugggg IIIIDDDD
  443.                        333377778888888899991111,,,, 333377778888999900008888))))
  444.                        In the 64-bit compiler, symbols are
  445.                        recognized for their full length in all
  446.                        contexts other than namelists where they are
  447.                        silently truncated if they are longer than 31
  448.                        characters.
  449.  
  450.                      +o CCCCoooommmmppppiiiilllleeee----TTTTiiiimmmmeeee eeeerrrrrrrroooorrrrssss ffffoooorrrr oooovvvveeeerrrrllllaaaappppppppiiiinnnngggg
  451.                        iiiinnnniiiittttiiiiaaaalllliiiizzzzaaaattttiiiioooonnnnssss uuuussssiiiinnnngggg DDDDAAAATTTTAAAA ssssttttaaaatttteeeemmmmeeeennnnttttssss ((((BBBBuuuugggg IIIIDDDD
  452.                        333300005555888888881111))))
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.                                                - 8 -
  465.  
  466.  
  467.  
  468.                        The 64-bit compiler can produce errors during
  469.                        compilation of programs that include
  470.                        overlapping initializations using DATA
  471.                        statements.
  472.  
  473.  
  474.                     5.4  _K_n_o_w_n _P_r_o_b_l_e_m_s _i_n _M_I_P_S_p_r_o _6_4-_B_i_t _a_n_d _N_3_2
  475.                          _F_o_r_t_r_a_n _7_7
  476.  
  477.                      +o BBBBuuuussss EEEErrrrrrrroooorrrr wwwwhhhheeeennnn ccccoooommmmppppiiiilllliiiinnnngggg wwwwiiiitttthhhh ----IIIIPPPPAAAA ((((BBBBuuuugggg IIIIDDDD
  478.                        555522221111111133339999))))
  479.                        Compiling a program that contains an
  480.                        initialization of an element of a COMMON
  481.                        block will abort with a bus error in the
  482.                        compiler if the program links with a shared
  483.                        object that contains a declaration of the
  484.                        same COMMON block and the compilation is done
  485.                        with the ----IIIIPPPPAAAA option.
  486.  
  487.  
  488.  
  489.                     5.5  _K_n_o_w_n__P_r_o_b_l_e_m_s__i_n__M_I_P_S_p_r_o__3_2_-_B_i_t__F_o_r_t_r_a_n__7_7
  490.  
  491.                      +o EEEExxxxeeeeccccuuuuttttaaaabbbblllleeee ssssttttaaaatttteeeemmmmeeeennnnttttssss iiiinnnn iiiinnnncccclllluuuuddddeeee ffffiiiilllleeeessss ((((BBBBuuuugggg
  492.                        IIIIDDDD 5555555599993333))))
  493.                        Executable statements are not allowed inside
  494.                        include files because of a symbol table
  495.                        requirement that all executable statements of
  496.                        the same program unit, or, at least, the
  497.                        first and the last executable statements,
  498.                        come from the same source file.  When
  499.                        executable statements are used inside include
  500.                        files, the compiler sometimes gives an
  501.                        internal _l_i_b_m_l_d error when compiled with the
  502.                        ----gggg option.  Please avoid using executable
  503.                        statements inside include files.
  504.  
  505.                      +o CCCCoooonnnnccccaaaatttteeeennnnaaaattttiiiioooonnnn iiiinnnn WWWWRRRRIIIITTTTEEEE ssssttttaaaatttteeeemmmmeeeennnntttt ((((BBBBuuuugggg IIIIDDDD
  506.                        9999444488887777))))
  507.                        Concatenation of character strings with
  508.                        variable lengths is not allowed in WRITE
  509.                        statements, although this can now be done in
  510.                        subroutine calls as an extension to the ANSI
  511.                        standard.  The workaround is to use comma to
  512.                        replace the concatenation operator since all
  513.                        Fortran output items are automatically
  514.                        concatenated as a matter of fact so the
  515.                        concatenation operation which puts the
  516.                        concatenated result into a temporary buffer
  517.                        is unnecessary, slows down the execution, and
  518.                        causes the program to be less portable.
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.                                                - 9 -
  531.  
  532.  
  533.  
  534.                      +o _cccc_pppp_pppp ddddooooeeeessss nnnnooootttt rrrreeeeccccooooggggnnnniiiizzzzeeee FFFFoooorrrrttttrrrraaaannnn ccccoooonnnnttttiiiinnnnuuuuaaaattttiiiioooonnnn
  535.                        lllliiiinnnneeeessss
  536.                        _c_p_p does not recognize Fortran continuation
  537.                        lines, so it can mistakenly think that a word
  538.                        is outside of a character string when that
  539.                        word is continued across lines.  If that word
  540.                        is defined with the ----DDDD option or by #define
  541.                        to be something else, _c_p_p can replace it with
  542.                        another value, resulting in the wrong
  543.                        character string value.  To work around this
  544.                        problem, either compile with the ----nnnnooooccccpppppppp
  545.                        option or break the word pattern into two
  546.                        lines so that _c_p_p cannot recognize it.
  547.  
  548.                      +o ----bbbbaaaacccckkkkssssllllaaaasssshhhh ddddooooeeeessss nnnnooootttt wwwwoooorrrrkkkk wwwwiiiitttthhhh _cccc_pppp_pppp
  549.                        Although the ----bbbbaaaacccckkkkssssllllaaaasssshhhh option causes _f_c_o_m to
  550.                        treat the backslash character as normal
  551.                        character, _c_p_p still treats it as special
  552.                        escape sequence and causes unexpected
  553.                        behavior.  Use ----nnnnooooccccpppppppp as a workaround.
  554.  
  555.                      +o UUUUssssiiiinnnngggg uuuunnnnddddeeeeccccllllaaaarrrreeeedddd aaaarrrrrrrraaaayyyyssss iiiissss mmmmiiiissssiiiinnnntttteeeerrrrpppprrrreeeetttteeeedddd aaaassss
  556.                        aaaa ssssttttaaaatttteeeemmmmeeeennnntttt ffffuuuunnnnccccttttiiiioooonnnn
  557.                        ((((BBBBuuuugggg IIIIDDDD 8888444499991111))))
  558.                        Referencing an array element on the left-hand
  559.                        side of an assignment without declaring the
  560.                        dimension for the array can cause the
  561.                        assignment statement to be misinterpreted as
  562.                        a statement function.
  563.  
  564.                      +o MMMMuuuullllttttiiiipppplllleeee ddddeeeeffffiiiinnnniiiittttiiiioooonnnnssss ooooffff ccccoooommmmmmmmoooonnnn bbbblllloooocccckkkkssss ((((BBBBuuuugggg IIIIDDDD
  565.                        11111111666622229999))))
  566.                        When a common block is defined several times
  567.                        in different files by using DATA statements
  568.                        to initialize one or more of the common block
  569.                        elements, the linker produces an error
  570.                        message regarding multiple definitions of
  571.                        symbols.  Solve this problem by moving all
  572.                        initialization of the same common block to
  573.                        one subroutine or block data.
  574.  
  575.                      +o VVVVeeeerrrryyyy llllaaaarrrrggggeeee aaaarrrrrrrraaaayyyyssss ccccaaaauuuusssseeee sssseeeeggggmmmmeeeennnnttttaaaattttiiiioooonnnn ffffaaaauuuulllltttt
  576.                        ((((BBBBuuuugggg IIIIDDDD 11111111999999994444))))
  577.                        When large arrays are declared inside a
  578.                        subroutine, the program can get a
  579.                        segmentation fault at execution time.  When
  580.                        this happens, check for the sizes of the
  581.                        declared arrays and reduce them if possible.
  582.  
  583.                      +o LLLLiiiinnnneeee nnnnuuuummmmbbbbeeeerrrr ffffoooorrrr ddddeeeeccccllllaaaarrrraaaattttiiiioooonnnn eeeerrrrrrrroooorrrr mmmmeeeessssssssaaaaggggeeeessss
  584.                        ((((BBBBuuuugggg IIIIDDDD 11112222999933336666))))
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.                                                - 10 -
  597.  
  598.  
  599.  
  600.                        Since many Fortran declarations are
  601.                        interrelated, the actual characteristics of a
  602.                        variable is not known until all declarations
  603.                        have been done, that is at the first
  604.                        executable statement.  Therefore, the error
  605.                        messages indicate the first executable
  606.                        statement when the actual error is due to the
  607.                        wrong combination of the declarations.  This
  608.                        problem usually effects variables declared in
  609.                        COMMON blocks and EQUIVALENCE statements.
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.